package de.QuizCommunity.service;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


import de.QuizCommunity.domain.Bewertung;
import de.QuizCommunity.util.XMLGetParser;

public class Bewertung_XML_Parser {
	static final String KEY_ITEM = "bewertung"; // parent node
	static final String KEY_ID = "idBewertung";
	static final String KEY_BENUTZER = "benutzerId";
	static final String KEY_WERT = "wert";
	static final String KEY_KOMMENTAR = "kommentar";
	static final String KEY_FRAGE = "frageId";

	public static List<Bewertung> getBewertungt(int id) {
		String URL = "http://www.iwi.hs-karlsruhe.de/ebatc/QuizCommunity/rest/webservice/bewertung/"
				+ id;
		XMLGetParser parser = new XMLGetParser();
		String xml = parser.getXmlFromUrl(URL); // getting XML
		Document doc = parser.getDomElement(xml); // getting DOM element
		List<Bewertung> bewertungList = new ArrayList<Bewertung>();
		NodeList nl = doc.getElementsByTagName(KEY_ITEM);
		for (int i = 0; i < nl.getLength(); i++) {
			Bewertung bewertung = new Bewertung();
			Element e = (Element) nl.item(i);
			bewertung.setIdBewertung(Integer.parseInt(parser.getValue(e, KEY_ID)));
			bewertung.setBenutzerId(Integer.parseInt(parser.getValue(e, KEY_BENUTZER)));
			bewertung.setWert(Integer.parseInt(parser.getValue(e, KEY_WERT)));
			bewertung.setKommentar(parser.getValue(e, KEY_KOMMENTAR));
			bewertung.setFrageId(Integer.parseInt(parser.getValue(e, KEY_FRAGE)));
			bewertungList.add(bewertung);
			

		}
		return bewertungList;
	}
	
	public static int sumBewertungByFrageId(int id){
		String sumstring = null;

		try {
			// defaultHttpClient
			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpGet httpGet = new HttpGet("http://www.iwi.hs-karlsruhe.de/ebatc/QuizCommunity/rest/webservice/bewertung/sum/"+id);
			HttpResponse httpResponse = httpClient.execute(httpGet);
			HttpEntity httpEntity = httpResponse.getEntity();
			sumstring = EntityUtils.toString(httpEntity);

		} catch (UnsupportedEncodingException e) {
			sumstring = e.getMessage();
		} catch (ClientProtocolException e) {
			sumstring = e.getMessage();
		} catch (IOException e) {
			sumstring = e.getMessage();
		}
		// return XML
		
		
		return Integer.parseInt(sumstring);
	}
	
	public static int anzBewertungByFrageId(int id){
		String anzstring = null;

		try {
			// defaultHttpClient
			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpGet httpGet = new HttpGet("http://www.iwi.hs-karlsruhe.de/ebatc/QuizCommunity/rest/webservice/bewertung/anz/"+id);
			HttpResponse httpResponse = httpClient.execute(httpGet);
			HttpEntity httpEntity = httpResponse.getEntity();
			anzstring = EntityUtils.toString(httpEntity);

		} catch (UnsupportedEncodingException e) {
			anzstring = e.getMessage();
		} catch (ClientProtocolException e) {
			anzstring = e.getMessage();
		} catch (IOException e) {
			anzstring = e.getMessage();
		}
		// return XML
		return Integer.parseInt(anzstring);
	}
}
